home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / amiexpress / source / utils / aemove / aemove.c
Encoding:
C/C++ Source or Header  |  1992-12-26  |  3.0 KB  |  166 lines

  1. #include <exec/types.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5.  
  6. char FileName[200];
  7. char DirName[200];
  8. char PathName[200];
  9. char DestName[200];
  10. void rmslash(char *str);
  11. void sr(char *str);
  12. void WriteToT(char *str);
  13. int TLock(char *str);
  14. void MoveFiles(char *Dir,char *Path,char *Dest);
  15. main(int argc,char *argv[])
  16. {
  17.   register int i;
  18.   if(argc!=4)
  19.   {
  20.     printf("AEMove version 1.0 written by Joseph Hodge\n");
  21.     printf("Usage: AEMove <dirpath> <sourcepath> <destpath>\n");
  22.     printf("   ie: AEMove bbs:elite/dir4 dh3: dh3:Elite\n");
  23.     printf("\n");
  24.     printf("This is an AmiExpress 1.1w+ utility\n");
  25.     printf("WARNING only moves files to same Partition\n");
  26.     exit(0);
  27.   }
  28.  
  29.   strcpy(DirName,argv[1]);
  30.   strcpy(PathName,argv[2]);
  31.   strcpy(DestName,argv[3]);
  32.   sr(DirName);
  33.   sr(PathName);
  34.   sr(DestName);
  35.   
  36.   rmslash(PathName);
  37.   rmslash(DestName);
  38.  
  39.   if(!TLock(DirName))
  40.   {
  41.     printf("Error, Can't locate dir file %s\n",DirName);
  42.     exit(0);
  43.   }
  44.   if(!TLock(PathName))
  45.   {
  46.     printf("Error, Can't locate source %s\n",PathName);
  47.     exit(0);
  48.   }
  49.   if(!TLock(DestName))
  50.   {
  51.     printf("Error, Can't locate destination path %s\n",DestName);
  52.     exit(0);
  53.   }
  54.  
  55.   MoveFiles(DirName,PathName,DestName);
  56. }
  57.  
  58. void MoveFiles(char *Dir,char *Path,char *Dest)
  59. {
  60.    FILE *fi;
  61.    char image[200];
  62.    char D[200];
  63.    char P[200];
  64.    char OFName[200];
  65.    char NFName[200];
  66.    long Errors=0L;
  67.    long Found=0L;
  68.    long Lost=0L;
  69.    strcpy(P,Path);
  70.    strcpy(D,Dest);
  71.  
  72.    if(P[strlen(P)-1]!='/' && P[strlen(P)-1]!=':')
  73.    {
  74.      strcat(P,"/");
  75.    }
  76.    if(D[strlen(D)-1]!='/' && D[strlen(D)-1]!=':')
  77.    {
  78.      strcat(D,"/");
  79.    }
  80.  
  81.    fi=fopen(Dir,"r");
  82.    if(fi==NULL)
  83.    {
  84.      printf("Error!!!! could not open Dir files\n\n");
  85.      exit(0);
  86.    }
  87.    while(fgets(image,90,fi)!=NULL)
  88.    {
  89.     if(image[0]>' ')
  90.     {
  91.      image[13]='\0';
  92.      sr(image);
  93.      sprintf(OFName,"%s%s",P,image);
  94.      sprintf(NFName,"%s%s",D,image);
  95.      if(TLock(OFName))
  96.      {
  97.        Found +=1L;
  98.        if(Rename(OFName,NFName))
  99.        {
  100.          printf("-->Moved %s to %s\n",OFName,NFName);
  101.        }
  102.        else
  103.        {
  104.          printf("-->Error could not move %s\n\n",OFName);
  105.          Errors +=1L;
  106.        }
  107.        
  108.      }
  109.      else
  110.      {
  111.        Lost +=1L; 
  112.        printf("** Could not locate %s\n",image);
  113.        WriteToT(image);
  114.      }
  115.     }
  116.    }
  117.   fclose(fi);
  118.   printf("Results: %ld Found, %ld Errors, %ld Lost\n\n",Found,Errors,Lost);
  119.  
  120. }
  121.  
  122. void WriteToT(char *str)
  123. {
  124.    FILE *fi;
  125.    static int i=0;
  126.    fi=fopen("T:LostFiles","a");
  127.    if(!i)
  128.    {
  129.      fprintf(fi,"********************************************\n");
  130.      i=1;
  131.    }
  132.    fprintf(fi,"%s\n",str);
  133.    fclose(fi);
  134. }
  135.  
  136. void sr(char *str)
  137. {
  138.   register int i;
  139.   i=strlen(str)-1;
  140.   while(i>-1)
  141.   {
  142.     if(*(str+i)<=32) *(str+i)='\0'; else break;
  143.     i--;
  144.   }
  145. }
  146.  
  147. void rmslash(char *str)
  148. {
  149.   register int i;
  150.   i=strlen(str)-1;
  151.   while(i>-1)
  152.   {
  153.     if(*(str+i)=='/' || *(str+i)<=32) *(str+i)='\0'; else break;
  154.     i--;
  155.   }
  156. }
  157. #define ACCESS_READ -2
  158. int TLock(char *str)
  159. {
  160.   long lock;
  161.   if(lock=Lock(str,ACCESS_READ))
  162.   {
  163.     UnLock(lock); return(1);
  164.   }
  165.   return(0);
  166. }